package com.songtech.auth.role.service;

import java.util.List;

import com.github.pagehelper.PageInfo;
import com.songtech.auth.resource.model.Resources;
import com.songtech.auth.role.model.Role;
import com.songtech.auth.user.model.User;

public interface RoleService {
	/**
	 * 新增角色
	 * @param role
	 * @return
	 * -1:已经存在相同code的角色
	 * 0:角色名或者角色code为空
	 * 1：新增成功
	 */
	public int addRole(Role role);
	/**
	 * 通过ID修改角色信息，修改有值的字段
	 * @param role
	 * @return
	 * -2：已经存在相同Code的角色
	 * -1:未找到当前角色信息
	 * 0:角色ID为空
	 * 1：修改成功
	 */
	public int updateRole(Role role);
	/**
	 * 通过ID修改角色信息，修改所有字段，如果字段无值将被置空
	 * 如果状态无值，默认设置为停用
	 * @param role
	 * @return
	 * -2：已经存在相同Code的角色
	 * -1:未找到当前角色信息
	 * 0:角色ID为空
	 * 2:角色Code不能为空
	 * 1：修改成功
	 */
	public int updateRoleByAll(Role role);
	/**
	 * 停用角色
	 * @param roleId
	 * @return 
	 * 0:停用失败
	 * 1:停用成功
	 */
	public int disabledRole(String roleId);
	/**
	 * 启用角色
	 * @param roleId
	 * @return
	 * 0:启用失败
	 * 1:启用成功
	 */
	public int eabledRole(String roleId);
	/**
	 * 逻辑删除角色
	 * @param roleId
	 * @return
	 */
	public int deleteRole(String roleId);
	/**
	 * 通过角色ID精确查询角色信息
	 * @param roleId
	 * @return
	 */
	public Role queryRoleByRoleId(String roleId);
	/**
	 * 通过角色Code精确查询角色信息
	 * @param roleCode
	 * @return
	 */
	public Role queryRoleByRoleCode(String roleCode);
	
	/**
	 * 查询所有角色
	 * @return
	 */
	public PageInfo<Role> queryRoleAll(Role role,int page, int limit); 
	
	/**
	 * 根据条件查询角色
	 * @return
	 */
	public List<Role> getRoles(Role role);
	/**
	 * 通过角色ID，获取所有用户
	 * @param roleId
	 * @return
	 */
	public PageInfo<User> getRoleUsers(String roleId,int pageNum, int pageSize);

	public List<User> getRoleAllUser(String roleId);
	/**
	 * 给角色分配资源
	 * @param roleId 角色ID
	 * @param resIdList 资源id集合（以逗号隔开）
	 * @return
	 */
	public int insertRoleRes(String roleId, List<String> resIdList); 
	/**
	 * 通过角色ID，获取拥有的资源
	 * @param roleId
	 * @return
	 */
	public List<Resources> getRoleRes(String roleId);
	/**
	 * 给角色分配用户
	 * @param roleId 角色ID
	 * @param userIds 用户Id集合（用逗号隔开）
	 * @return
	 */
	public int insertRoleUsers(String roleId, List<String> userIds);
	
	/**
	 * 根据登录用户获取菜单
	 * @param loginName
	 * @return
	 */
	public List<Resources> getRes(String loginName);
}
